SetGfxDriver 1:Graphics 800,600,8,2 :SetBuffer FrontBuffer() ;:SeedRnd MilliSecs()
Include "fn1.bb"
st1#=1256:st2#=1256:st3#=1256:st4#=1256
While Not KeyHit(1) Or MouseHit(2)
ClsColor 0,0,0
Cls
randnum(0)
getnums()
;	fact_faza():erase()
;	Color 255,255,210:Text 5,5,bit+"/"+unbit+" "+fasecnt+":  "+ tycnt+" maxfase1: "+maxfase1+" minfase2: "+minfase2+"  middle=" + ttt0+"/"+ zzz1 + ", Null cnt=" + cnull+"%, max without Null="+wnullmax+", phase=3",False ,False
	


;checke()
;Color 210,255,210:Text 310,2,in,False ,False
zzz1=zzz1+1:hzzz1=hzzz1+1:jzzz1=jzzz1+1
Flip
If zzz1> 71   Then 
 WaitMouse()
;bit=WaitMouse()
If ((bit<>2) And (tycnt>maxfase1)) Then maxfase1=tycnt
If ((bit=2) And (tycnt<minfase2)) Then minfase2=tycnt	
bit=mod4(bit):
randnum(1):fasecnt=fasecnt+1
EndIf

VWait 
Wend 

Function erase()

		
		
	For unittest=0 To 5	
		For i = 0 To 9 
		PokeInt in3,i*5,mod2(PeekInt (in31,i*5) + unittest^st1) 
		PokeInt in2,i*5,mod2(PeekInt (in1,i*5) )  		;- PeekInt (in51,i*5)
		PokeInt in4,i*5,mod2(PeekInt (in41,i*5)+ unittest^st2)				
		Next 
			eee1=fact(fact(PeekInt(in2,0),PeekInt(in2,5),PeekInt(in2,10)),fact(PeekInt(in2,0+15),PeekInt(in2,5+15),PeekInt(in2,10+15)),fact(PeekInt(in2,0+2*15),PeekInt(in2,5+2*15),PeekInt(in2,10+2*15)))
			eee2=fact(fact(PeekInt(in3,0),PeekInt(in3,5),PeekInt(in3,10)),fact(PeekInt(in3,0+15),PeekInt(in3,5+15),PeekInt(in3,10+15)),fact(PeekInt(in3,0+2*15),PeekInt(in3,5+2*15),PeekInt(in3,10+2*15)))
			eee3=fact(fact(PeekInt(in4,0),PeekInt(in4,5),PeekInt(in4,10)),fact(PeekInt(in4,0+15),PeekInt(in4,5+15),PeekInt(in4,10+15)),fact(PeekInt(in4,0+2*15),PeekInt(in4,5+2*15),PeekInt(in4,10+2*15)))
			eee=fact(eee1,eee2,eee3)
		If (eee = unittest) Then untest=unittest:hzzz(hzzz1)=hzzz(hzzz1)+1:hzzz2(hzzz1,hzzz2(hzzz1,100))=unittest:in$=in$+""+unittest:hzzz2(hzzz1,100)=hzzz2(hzzz1,100)+1
		If hzzz2(hzzz1,100)=0 Then hzzz2(hzzz1,99)=heee
	Next
		PokeInt in5,i*5,mod2(PeekInt (in31,i*5));+ untest^st1) 
		PokeInt in6,i*5,mod2(PeekInt (in1,i*5) )
		PokeInt in7,i*5,mod2(PeekInt (in41,i*5));+ untest^st2)
		
; 		For i = 0 To 9 
;		PokeInt in3,i*5,mod2(PeekInt (in3,i*5)Xor PeekInt (in61,i*5)) 
;		PokeInt in2,i*5,mod2(PeekInt (in2,i*5)Xor PeekInt (in51,i*5));		
;		PokeInt in4,i*5,mod2(PeekInt (in4,i*5)Xor PeekInt (in71,i*5))
;		PokeInt in5,i*5,mod2(PeekInt (in3,i*5)Xor PeekInt (in51,i*5)) 
;		PokeInt in6,i*5,mod2(PeekInt (in2,i*5)Xor PeekInt (in71,i*5));		
;		PokeInt in7,i*5,mod2(PeekInt (in4,i*5)Xor PeekInt (in61,i*5))	
;		Next				
		
		For unittest=0 To 5	
			For i = 0 To 9 
			PokeInt in3,i*5,mod2(PeekInt (in31,i*5)-unittest^st1) 
			PokeInt in2,i*5,mod2(PeekInt (in1,i*5) ) 		
			PokeInt in4,i*5,mod2(PeekInt (in41,i*5)-unittest^st2)			
			Next 
			eee1=fact(fact(PeekInt(in2,0),PeekInt(in2,5),PeekInt(in2,10)),fact(PeekInt(in2,0+15),PeekInt(in2,5+15),PeekInt(in2,10+15)),fact(PeekInt(in2,0+2*15),PeekInt(in2,5+2*15),PeekInt(in2,10+2*15)))
			eee2=fact(fact(PeekInt(in3,0),PeekInt(in3,5),PeekInt(in3,10)),fact(PeekInt(in3,0+15),PeekInt(in3,5+15),PeekInt(in3,10+15)),fact(PeekInt(in3,0+2*15),PeekInt(in3,5+2*15),PeekInt(in3,10+2*15)))
			eee3=fact(fact(PeekInt(in4,0),PeekInt(in4,5),PeekInt(in4,10)),fact(PeekInt(in4,0+15),PeekInt(in4,5+15),PeekInt(in4,10+15)),fact(PeekInt(in4,0+2*15),PeekInt(in4,5+2*15),PeekInt(in4,10+2*15)))
			eee=fact(eee1,eee2,eee3)
			If (eee = unittest) Then jzzz(jzzz1)=jzzz(jzzz1)+1:jzzz2(jzzz1,jzzz2(jzzz1,100))=unittest:jzzz2(jzzz1,100)=jzzz2(jzzz1,100)+1
			If jzzz2(jzzz1,100)=0 Then jzzz2(jzzz1,99)=eee
		Next
	
	If (hzzz(hzzz1)<>0) And (jzzz(jzzz1)<>0) And  (hzzz2(hzzz1,0)=jzzz2(jzzz1,0)) Then 

	
;	If ((hzzz(hzzz1)=0) And (jzzz(jzzz1)=1)) Or ((hzzz(hzzz1)=1) And (jzzz(jzzz1)=0)) Then 
	tycnt=tycnt+1
	EndIf
	

	


		
End Function

Function fact_faza()

	For unittest=0 To 5	
		For i = 0 To 9 
		PokeInt in3,i*5,mod2(PeekInt (in31,i*5) - unittest^st3) 
		PokeInt in2,i*5,mod2(PeekInt (in1,i*5) )  		;- PeekInt (in51,i*5)
		PokeInt in4,i*5,mod2(PeekInt (in41,i*5)- unittest^st4 )				
		Next 
		eee1=fact(fact(PeekInt(in2,0),PeekInt(in2,5),PeekInt(in2,10)),fact(PeekInt(in2,0+15),PeekInt(in2,5+15),PeekInt(in2,10+15)),fact(PeekInt(in2,0+2*15),PeekInt(in2,5+2*15),PeekInt(in2,10+2*15)))
		eee2=fact(fact(PeekInt(in3,0),PeekInt(in3,5),PeekInt(in3,10)),fact(PeekInt(in3,0+15),PeekInt(in3,5+15),PeekInt(in3,10+15)),fact(PeekInt(in3,0+2*15),PeekInt(in3,5+2*15),PeekInt(in3,10+2*15)))
		eee3=fact(fact(PeekInt(in4,0),PeekInt(in4,5),PeekInt(in4,10)),fact(PeekInt(in4,0+15),PeekInt(in4,5+15),PeekInt(in4,10+15)),fact(PeekInt(in4,0+2*15),PeekInt(in4,5+2*15),PeekInt(in4,10+2*15)))
		eee=fact(eee1,eee2,eee3)
		If (eee = unittest) Then untest=unittest:zzz(zzz1)=zzz(zzz1)+1:zzz2(zzz1,zzz2(zzz1,100))=unittest:zzz2(zzz1,100)=zzz2(zzz1,100)+1
		If zzz2(zzz1,100)=0 Then zzz2(zzz1,99)=eee
	Next


If bit <>2 Then	

;If (Floor(zzz1/3)*3 =zzz1)	Then
;		For i = 0 To 9 
;		PokeInt in31,i*5,mod2(PeekInt (in31,i*5)Xor PeekInt (in51,i*5)) 
;		PokeInt in1,i*5,mod2(PeekInt (in1,i*5)Xor PeekInt (in71,i*5));		
;		PokeInt in41,i*5,mod2(PeekInt (in41,i*5)Xor PeekInt (in61,i*5))	
;		PokeInt in31,i*5,mod2(PeekInt (in31,i*5)Xor PeekInt (in61,i*5)) 
;		PokeInt in1,i*5,mod2(PeekInt (in1,i*5)Xor PeekInt (in51,i*5));		
;		PokeInt in41,i*5,mod2(PeekInt (in41,i*5)Xor PeekInt (in71,i*5))
;		Next 	
;EndIf 		

;		For i = 0 To 9 
;		PokeInt in31,i*5,mod2(PeekInt (in31,i*5)Xor 65535) 
;		PokeInt in1,i*5,mod2(PeekInt (in1,i*5)Xor 65535);		
;		PokeInt in41,i*5,mod2(PeekInt (in41,i*5)Xor 65535)	
;		Next 
		PokeInt in31,i*5,mod2(PeekInt (in31,i*5)+ untest^st3)
		PokeInt in1,i*5,mod2(PeekInt (in1,i*5));		 
		PokeInt in41,i*5,mod2(PeekInt (in41,i*5)+ untest^st4) 		
				
;	For unittest=0 To 9	
;
;		heee1=fact(fact(PeekInt(in1,0),PeekInt(in1,5),PeekInt(in1,10)),fact(PeekInt(in1,0+15),PeekInt(in1,5+15),PeekInt(in1,10+15)),fact(PeekInt(in1,0+2*15),PeekInt(in1,5+2*15),PeekInt(in1,10+2*15)))
;		heee2=fact(fact(PeekInt(in31,0),PeekInt(in31,5),PeekInt(in31,10)),fact(PeekInt(in31,0+15),PeekInt(in31,5+15),PeekInt(in31,10+15)),fact(PeekInt(in31,0+2*15),PeekInt(in31,5+2*15),PeekInt(in31,10+2*15)))
;		heee3=fact(fact(PeekInt(in41,0),PeekInt(in41,5),PeekInt(in41,10)),fact(PeekInt(in41,0+15),PeekInt(in41,5+15),PeekInt(in41,10+15)),fact(PeekInt(in41,0+2*15),PeekInt(in41,5+2*15),PeekInt(in41,10+2*15)))
;		heee=fact(heee1,heee2,heee3)
;		If (heee = unittest) Then hzzz(hzzz1)=hzzz(hzzz1)+1:hzzz2(hzzz1,hzzz2(hzzz1,100))=unittest:in$=in$+""+unittest:hzzz2(hzzz1,100)=hzzz2(hzzz1,100)+1
;		If hzzz2(hzzz1,100)=0 Then hzzz2(hzzz1,99)=heee
;	Next


;		PokeInt in31,i*5,mod2(PeekInt (in31,i*5)- untest^47*10) 
;		PokeInt in1,i*5,mod2(PeekInt (in1,i*5));		
;		PokeInt in41,i*5,mod2(PeekInt (in41,i*5)- untest^47*10)
Else

		
		PokeInt in31,i*5,mod2(PeekInt (in31,i*5)- untest^st3)
		PokeInt in1,i*5,mod2(PeekInt (in1,i*5));		 
		PokeInt in41,i*5,mod2(PeekInt (in41,i*5)- untest^st4) 
	
EndIf 	


End Function